#!/bin/bash
# set -e
dir_path=$(cd `dirname $0`; pwd)
cd $dir_path; pwd

# 变量定义开始
# 本次发布版本号
RELEASE_VERSION=1.10.5
# 磁盘挂载目录 /apidata
MOUNT_PATH=/apidata

# telegraf采集日志使用的influxdb url
INFLUXDB_URL=http://192.168.1.1:8086
INFLUXDB_USERNAME=
INFLUXDB_PASSWORD=

# 能力网关MYSQL数据库配置
MYSQL_HOST_PORT=192.168.1.1:3306
MYSQL_DATABASE=databasename
MYSQL_USERNAME=username
MYSQL_PASSWORD=password

#-----------------------------------
# KONG对外提供的HTTP协议访问地址
# 集群模式下请配置NGINX代理地址
KONG_URL=http://192.168.1.1:80
# KONG对外提供的HTTPS协议访问地址
# 集群模式下请配置NGINX代理HTTP协议的HTTPS，因为多台KONG服务的SSL证书随机生成，存在不一致，不能直接使用TCP代理HTTPS
KONG_HTTPS_URL=

# kong vpc内部地址
KONG_VPC_URL=http://192.168.1.1:80
KONG_VPC_HTTPS_URL=

# 能力网关开发调试服务IP地址配置
# 集群模式下一般直接指定SpaceX Kong服务中某一台服务，不使用集群代理地址，防止调试时机器漂移
# 集群模式下即使指定的服务器Down不可用，不影响服务调用，只是管理服务短暂不可用
KONG_DEBUG_IP=192.168.1.1
# 能力网关开发调试服务端口配置
KONG_DEBUG_PORT=8001
KONG_DEBUG_ADMIN_PORT=8002
#-----------------------------------

#-----------------------------------
# 能力网关服务对外发布端口配置
GATEWAY_SERVER_PORT=8088
# 能力网关转换器地址 内部SLB地址
GATEWAY_CONVERT_URL=http://192.168.1.1:8080
#-----------------------------------

# 是否记录全量请求日志信息
KONG_LOG_FULL_ENABLE=false
# kong是否记录错误日志
KONG_ERROR_LOG_ENABLE=true

# 是否开启透传
SERVICE_TRANSMISSION_ENABLE=false

# 告警配置
# kapacitor告警引擎地址配置
KAPACITOR_URL=http://192.168.1.1:9092
# kapacitor告警事件回调服务地址
GATEWAY_EVENT_NOTIFY_URL=$GATEWAY_CONVERT_URL
#GATEWAY_EVENT_NOTIFY_URL=http://192.168.1.1:8080

# 接入云渡 url
YUNDU_ENABLED=false
YUNDU_URL=http://192.168.1.1:1320/api/open/sync/server

# 两定接口 url
CSB_MEDINS_SERVICE=http://192.168.1.1:8086/1.0.0/hsa-usc-nation-medinsInfoService-queryByDTO
CSB_RTAL_SERVICE=http://192.168.1.1:8086/1.0.0/hsa-usc-nation-rtalPhacService-queryByDTO

# 自定义kong错误返回信息体：csb:两定接口 hx:横向接口
ERROR_FORMAT=hx

# redis 配置
REDIS_HOST=192.168.1.1
REDIS_PORT=6379
REDIS_PASSWORD=password
REDIS_DATABASE=0
REDIS_TIMEOUT=2000

# 日志记录路径 需为磁盘挂载目录
GW_LOG_PATH=$MOUNT_PATH/gw-logs

# 区域行政区域校验配置说明：针对浙江省不同地市做账号新增和导入限制
# 参考git文档工程[api-devops-docs]中文档[gateway行政区域配置说明.txt]
ADMDVS_ROUTES_LIST="3301,杭州市;3302,宁波市;3303,温州市;3304,嘉兴市;3305,湖州市;3306,绍兴市;3307,金华市;3308,衢州市;3309,舟山市;3310,台州市;3311,丽水市;3399,浙江省省本级"

#告警相隔配置 开始

# 服务告警错误次数阈值(根据业务场景可变)
SERVICE_ALARMCOUNT="10"
# 服务告警时间查询范围(根据业务场景可变)
SERVICE_ALARMCOUNTTIME="180s"
# 服务告警周期(根据业务场景可变)
SERVICE_ALARMEVERYTIME="10s"
# 告警重复时间，以秒为单位,当配置60S时,60S内重复告警多次但是只会只推送一条消息给用户(根据业务场景可变)
SERVICE_ALARMREPEATTIME="120"
# 服务告警恢复时间查询范围(根据业务场景可变)
SERVICE_RECOVERYTIME="480s"
# 服务告警恢复预留字段配置0(根据业务场景可变)
SERVICE_RECOVERYCOUNT="0"
# 服务告警恢复周期(根据业务场景可变)
SERVICE_RECOVERYEVERYTIME="60s"

# 应用告警错误次数阈值(根据业务场景可变)
CLIENT_ALARMCOUNT="10"
# 应用告警时间查询范围(根据业务场景可变)
CLIENT_ALARMCOUNTTIME="240s"
# 应用告警周期(根据业务场景可变)
CLIENT_ALARMEVERYTIME="10s"
# 告警重复时间，以秒为单位,当配置60S时,60S内重复告警多次但是只会只推送一条消息给用户(根据业务场景可变)
CLIENT_ALARMREPEATTIME="120"
# 应用告警恢复时间查询范围(根据业务场景可变)
CLIENT_RECOVERYTIME="480s"
# 应用告警恢复预留字段配置0(根据业务场景可变)
CLIENT_RECOVERYCOUNT="60"
# 应用告警恢复周期(根据业务场景可变)
CLIENT_RECOVERYEVERYTIME="60s"


#告警相关配置 结束
# swagger 启动配置
OPENAPI_ENABLE=false

echo "变量定义结束"
# 变量定义结束

echo "开始给目录赋权$GW_LOG_PATH"
mkdir -p $GW_LOG_PATH
chmod -R 777 $GW_LOG_PATH
echo "目录赋权成功"


# Kong管理地址配置(不要修改)
# 集群模式下一般直接指定Kong服务中调试机器的管理地址，不使用集群代理地址，防止调试时机器漂移
# 集群模式下即使管理服务器Down，不影响服务调用，只是管理服务短暂不可用
KONG_ADMIN_URL=http://$KONG_DEBUG_IP:$KONG_DEBUG_ADMIN_PORT

echo "停止并删除spacex-gateway"
docker stop spacex-gateway
docker rm spacex-gateway
docker load < ../images/spacex-gateway-$RELEASE_VERSION.tar
echo "停止并删除spacex-gateway成功"

echo "开始安装spacex-gateway" 
docker run --name spacex-gateway \
  --restart=always -d \
	--add-host=spacex.debug:$KONG_DEBUG_IP \
	-v /etc/localtime:/etc/localtime \
	-v $GW_LOG_PATH:/opt/logs \
	-e "mysql-host-port=$MYSQL_HOST_PORT" \
	-e "mysql-database=$MYSQL_DATABASE" \
	-e "mysql-username=$MYSQL_USERNAME" \
	-e "mysql-password=$MYSQL_PASSWORD" \
	-e "kong-url=$KONG_URL" \
	-e "kong-https-url=$KONG_HTTPS_URL" \
	-e "kong-debug-port=$KONG_DEBUG_PORT" \
	-e "kong-admin-url=$KONG_ADMIN_URL" \
	-e "kong-log-full=$KONG_LOG_FULL_ENABLE" \
	-e "kong-error-log=$KONG_ERROR_LOG_ENABLE" \
	-e "protocol-convert=$GATEWAY_CONVERT_URL" \
	-e "influxdb-url=$INFLUXDB_URL" \
	-e "influxdb-username=$INFLUXDB_USERNAME" \
	-e "influxdb-password=$INFLUXDB_PASSWORD" \
	-e "yundu-enabled=$YUNDU_ENABLED" \
	-e "yundu-path=$YUNDU_URL" \
	-e "csb-medins-service=$CSB_MEDINS_SERVICE" \
	-e "csb-rtal-service=$CSB_RTAL_SERVICE" \
	-e "error-format=$ERROR_FORMAT" \
	-e "redis-host=$REDIS_HOST" \
	-e "redis-port=$REDIS_PORT" \
	-e "redis-password=$REDIS_PASSWORD" \
	-e "redis-database=$REDIS_DATABASE" \
	-e "redis-timeout=$REDIS_TIMEOUT" \
  -e "kong-vpc-url=$KONG_VPC_URL" \
  -e "kong-vpc-https-url=$KONG_VPC_HTTPS_URL" \
	-e "spacex-transmission=$SERVICE_TRANSMISSION_ENABLE" \
	-e "kapacitor-url=$KAPACITOR_URL" \
	-e "event-notify-url=$GATEWAY_EVENT_NOTIFY_URL" \
	-e "admdvs-routes-list=$ADMDVS_ROUTES_LIST" \
	-e "service-alarmCount=$SERVICE_ALARMCOUNT" \
	-e "service-alarmCountTime=$SERVICE_ALARMCOUNTTIME" \
	-e "service-alarmEveryTime=$SERVICE_ALARMEVERYTIME" \
	-e "service-alarmRepeatTime=$SERVICE_ALARMREPEATTIME" \
	-e "service-recoveryTime=$SERVICE_RECOVERYTIME" \
	-e "service-recoveryCount=$SERVICE_RECOVERYCOUNT" \
	-e "service-recoveryEveryTime=$SERVICE_RECOVERYEVERYTIME" \
	-e "client-alarmCount=$CLIENT_ALARMCOUNT" \
	-e "client-alarmCountTime=$CLIENT_ALARMCOUNTTIME" \
	-e "client-alarmEveryTime=$CLIENT_ALARMEVERYTIME" \
	-e "client-alarmRepeatTime=$CLIENT_ALARMREPEATTIME" \
	-e "client-recoveryTime=$CLIENT_RECOVERYTIME" \
	-e "client-recoveryCount=$CLIENT_RECOVERYCOUNT" \
	-e "client-recoveryEveryTime=$CLIENT_RECOVERYEVERYTIME" \
	-e "openapi-enable=$OPENAPI_ENABLE" \
	-p $GATEWAY_SERVER_PORT:8080 \
	yunjia/spacex-gateway:$RELEASE_VERSION
	    	    
echo "spacex-gateway安装成功"
